In [1]:
import PV_ICE
In [2]:
import matplotlib.pyplot as plt
import os,sys
from pathlib import Path
In [3]:
PV_ICE.__version__
Out[3]:
'v0.2.0+340.g755e84a.dirty'
In [4]:
modulefile_m = r'C:\Users\hmirletz\Documents\GitHub\PV_ICE\tests\baseline_modules_test_3.csv'
materialfile_m = r'C:\Users\hmirletz\Documents\GitHub\PV_ICE\tests\baseline_material_test_3.csv'
testfolder = str(Path().resolve().parent.parent / 'PV_ICE' / 'TEMP')
In [5]:
sim1 = PV_ICE.Simulation(name='sim1', path=testfolder)
sim1.createScenario(name='scen1', massmodulefile=modulefile_m)
sim1.scenario['scen1'].addMaterial('mat1', massmatfile=materialfile_m)
path = C:\Users\hmirletz\Documents\GitHub\PV_ICE\PV_ICE\TEMP
In [6]:
sim1.calculateMassFlow()
>>>> Calculating Material Flows <<<<

Working on Scenario:  scen1
********************
Finished Area+Power Generation Calculations
==> Working on Material :  mat1
In [7]:
year, cum = sim1.aggregateResults()
In [8]:
# TO DO: Add HQ MF OU to aggregateResults 
In [9]:
sim1.scenario['scen1'].material['mat1'].matdataOut_m.keys()
Out[9]:
Index(['mat_EOL_ReMFG_VAT', 'mat_EOL_Recycled_2_HQ', 'mat_EOL_Recycled_2_OQ',
       'mat_EOL_Recycled_HQ_into_MFG', 'mat_EOL_Recycled_HQ_into_MFG_notUSED',
       'mat_EOL_Recycled_HQ_into_OU', 'mat_EOL_Recycled_VAT',
       'mat_EnteringModuleManufacturing_total',
       'mat_EnteringModuleManufacturing_virgin', 'mat_L0', 'mat_L1', 'mat_L2',
       'mat_L3', 'mat_L4', 'mat_LostinModuleManufacturing',
       'mat_MFG_Recycled_HQ_into_MFG', 'mat_MFG_Recycled_HQ_into_OU',
       'mat_MFG_Recycled_into_HQ', 'mat_MFG_Recycled_into_OQ', 'mat_MFG_Scrap',
       'mat_MFG_Scrap_Landfilled', 'mat_MFG_Scrap_Recycled_Losses_Landfilled',
       'mat_MFG_Scrap_Recycled_Successfully', 'mat_MFG_Scrap_Sentto_Recycling',
       'mat_Manufacturing_Input', 'mat_PG2_stored', 'mat_Total_EOL_Landfilled',
       'mat_Total_Landfilled', 'mat_Total_MFG_Landfilled',
       'mat_Total_Recycled_OU', 'mat_UsedSuccessfullyinModuleManufacturing',
       'mat_Virgin_Stock', 'mat_Virgin_Stock_Raw', 'mat_reMFG',
       'mat_reMFG_2_recycle', 'mat_reMFG_all_unyields',
       'mat_reMFG_mod_unyield', 'mat_reMFG_target', 'mat_reMFG_untarget',
       'mat_reMFG_unyield', 'mat_reMFG_yield', 'mat_recycled_PG4',
       'mat_recycled_all', 'mat_recycled_target', 'mat_recycled_yield'],
      dtype='object')
In [10]:
plt.plot(sim1.scenario['scen1'].material['mat1'].matdataOut_m['mat_recycled_PG4'])
Out[10]:
[<matplotlib.lines.Line2D at 0x24cbcc1ab20>]
In [11]:
plt.plot(sim1.scenario['scen1'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_OU'])
Out[11]:
[<matplotlib.lines.Line2D at 0x24cbd2ff430>]
In [12]:
year.keys()
Out[12]:
Index(['VirginStock_mat1_sim1_scen1_[Tonnes]',
       'VirginStock_Module_sim1_scen1_[Tonnes]',
       'WasteAll_mat1_sim1_scen1_[Tonnes]',
       'WasteAll_Module_sim1_scen1_[Tonnes]',
       'WasteEOL_mat1_sim1_scen1_[Tonnes]',
       'WasteEOL_Module_sim1_scen1_[Tonnes]',
       'WasteMFG_mat1_sim1_scen1_[Tonnes]',
       'WasteMFG_Module_sim1_scen1_[Tonnes]',
       'newInstalledCapacity_sim1_scen1_[MW]',
       'ActiveCapacity_sim1_scen1_[MW]',
       'DecommisionedCapacity_sim1_scen1_[MW]'],
      dtype='object')
In [13]:
plt.plot(year['VirginStock_mat1_sim1_scen1_[Tonnes]'])
Out[13]:
[<matplotlib.lines.Line2D at 0x24cbd36ed00>]
In [14]:
plt.plot(year['ActiveCapacity_sim1_scen1_[MW]'])
Out[14]:
[<matplotlib.lines.Line2D at 0x24cbd3e2220>]
In [15]:
sim1.plotMetricResults()
[]
In [16]:
sim1.createScenario(name='scen2', massmodulefile=modulefile_m)
sim1.scenario['scen2'].addMaterial('mat1', massmatfile=materialfile_m)
In [17]:
# sim1.scenario['scen2'].perfectRecycling()
#'mat_EOL_RecycledHQ_Reused4MFG'

sim1.modifyScenario('scen2', 'mod_EOL_pg3_reMFG', 100, start_year=2000) #all modules attempt remfg
sim1.modifyScenario('scen2', 'mod_EOL_sp_reMFG_recycle', 100, start_year=2000) # recycle if can't remfg
sim1.modifyScenario('scen2', 'mod_EOL_pb3_reMFG', 100, start_year=2000) # remfg bad mods too
sim1.modifyScenario('scen2', 'mod_EOL_reMFG_yield', 100, start_year=2000) # REMFG YIELD 98%

#set all other paths to 0
sim1.modifyScenario('scen2', 'mod_EOL_pg0_resell', 0.0, start_year=2000) # 
sim1.modifyScenario('scen2', 'mod_EOL_pg1_landfill', 0.0, start_year=2000) # 
sim1.modifyScenario('scen2', 'mod_EOL_pg2_stored', 0.0, start_year=2000) #
sim1.modifyScenario('scen2', 'mod_EOL_pg4_recycled', 0.0, start_year=2000) # 
sim1.modifyScenario('scen2', 'mod_EOL_pb1_landfill', 0.0, start_year=2000) # 
sim1.modifyScenario('scen2', 'mod_EOL_pb2_stored', 0.0, start_year=2000) # 
sim1.modifyScenario('scen2', 'mod_EOL_pb4_recycled', 0.0, start_year=2000) # 
sim1.modifyScenario('scen2', 'mod_Repair', 0.0, start_year=2000) #
sim1.modifyScenario('scen2', 'mod_MerchantTail', 0.0, start_year=2000) #

sim1.scenario['scen2'].modifyMaterials('mat1', 'mat_PG3_ReMFG_target', 100.0, start_year=2000) #send to recycle
sim1.scenario['scen2'].modifyMaterials('mat1', 'mat_ReMFG_yield', 100.0, start_year=2000) #99% yeild
sim1.scenario['scen2'].modifyMaterials('mat1', 'mat_PG4_Recycling_target', 0.0, start_year=2000) #99% yeild
In [18]:
sim1.calculateMassFlow()
>>>> Calculating Material Flows <<<<

Working on Scenario:  scen1
********************
Finished Area+Power Generation Calculations
==> Working on Material :  mat1
Working on Scenario:  scen2
********************
Finished Area+Power Generation Calculations
==> Working on Material :  mat1
ReMFG surplus End of Sim for Mat  mat1  Scenario  scen2  =  210.0  tonnes.
In [19]:
year, cum = sim1.aggregateResults()
In [20]:
# TO DO: Add HQ MF OU to aggregateResults 
In [21]:
sim1.scenario['scen1'].material['mat1'].matdataOut_m.keys()
Out[21]:
Index(['mat_EOL_ReMFG_VAT', 'mat_EOL_Recycled_2_HQ', 'mat_EOL_Recycled_2_OQ',
       'mat_EOL_Recycled_HQ_into_MFG', 'mat_EOL_Recycled_HQ_into_MFG_notUSED',
       'mat_EOL_Recycled_HQ_into_OU', 'mat_EOL_Recycled_VAT',
       'mat_EnteringModuleManufacturing_total',
       'mat_EnteringModuleManufacturing_virgin', 'mat_L0', 'mat_L1', 'mat_L2',
       'mat_L3', 'mat_L4', 'mat_LostinModuleManufacturing',
       'mat_MFG_Recycled_HQ_into_MFG', 'mat_MFG_Recycled_HQ_into_OU',
       'mat_MFG_Recycled_into_HQ', 'mat_MFG_Recycled_into_OQ', 'mat_MFG_Scrap',
       'mat_MFG_Scrap_Landfilled', 'mat_MFG_Scrap_Recycled_Losses_Landfilled',
       'mat_MFG_Scrap_Recycled_Successfully', 'mat_MFG_Scrap_Sentto_Recycling',
       'mat_Manufacturing_Input', 'mat_PG2_stored', 'mat_Total_EOL_Landfilled',
       'mat_Total_Landfilled', 'mat_Total_MFG_Landfilled',
       'mat_Total_Recycled_OU', 'mat_UsedSuccessfullyinModuleManufacturing',
       'mat_Virgin_Stock', 'mat_Virgin_Stock_Raw', 'mat_reMFG',
       'mat_reMFG_2_recycle', 'mat_reMFG_all_unyields',
       'mat_reMFG_mod_unyield', 'mat_reMFG_target', 'mat_reMFG_untarget',
       'mat_reMFG_unyield', 'mat_reMFG_yield', 'mat_recycled_PG4',
       'mat_recycled_all', 'mat_recycled_target', 'mat_recycled_yield'],
      dtype='object')
In [22]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_recycled_PG4'])
Out[22]:
[<matplotlib.lines.Line2D at 0x24cc2022550>]
In [23]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_OU'])
Out[23]:
[<matplotlib.lines.Line2D at 0x24cc21bf4c0>]
In [24]:
year['VirginStock_mat1_sim1_scen1_[Tonnes]'].sum()
Out[24]:
290.0
In [25]:
year['VirginStock_mat1_sim1_scen2_[Tonnes]'].sum()
Out[25]:
210.0
In [26]:
sim1.scenario['scen1'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_OU'].sum()
Out[26]:
290000000.0
In [27]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_MFG'])
Out[27]:
[<matplotlib.lines.Line2D at 0x24cc209a4f0>]
In [28]:
sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_MFG'].sum()
Out[28]:
0.0
In [29]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_VAT'], label='What actually got used in reMFG')
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_MFG'], label='What got Sent in reMFG')
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_MFG']
         -
         sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_VAT'], label='What did not got used in reMFG')
plt.legend()

(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_MFG']
         -
         sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_VAT']).sum()
Out[29]:
0.0
In [30]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_VAT'])
Out[30]:
[<matplotlib.lines.Line2D at 0x24cc216ea00>]
In [31]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_VAT'])
Out[31]:
[<matplotlib.lines.Line2D at 0x24cc20bafd0>]
In [32]:
plt.plot(sim1.scenario['scen2'].material['mat1'].matdataOut_m['mat_EOL_Recycled_HQ_into_MFG'])
Out[32]:
[<matplotlib.lines.Line2D at 0x24cc1f03850>]
In [33]:
year.keys()
Out[33]:
Index(['VirginStock_mat1_sim1_scen1_[Tonnes]',
       'VirginStock_Module_sim1_scen1_[Tonnes]',
       'WasteAll_mat1_sim1_scen1_[Tonnes]',
       'WasteAll_Module_sim1_scen1_[Tonnes]',
       'WasteEOL_mat1_sim1_scen1_[Tonnes]',
       'WasteEOL_Module_sim1_scen1_[Tonnes]',
       'WasteMFG_mat1_sim1_scen1_[Tonnes]',
       'WasteMFG_Module_sim1_scen1_[Tonnes]',
       'VirginStock_mat1_sim1_scen2_[Tonnes]',
       'VirginStock_Module_sim1_scen2_[Tonnes]',
       'WasteAll_mat1_sim1_scen2_[Tonnes]',
       'WasteAll_Module_sim1_scen2_[Tonnes]',
       'WasteEOL_mat1_sim1_scen2_[Tonnes]',
       'WasteEOL_Module_sim1_scen2_[Tonnes]',
       'WasteMFG_mat1_sim1_scen2_[Tonnes]',
       'WasteMFG_Module_sim1_scen2_[Tonnes]',
       'newInstalledCapacity_sim1_scen1_[MW]',
       'newInstalledCapacity_sim1_scen2_[MW]',
       'ActiveCapacity_sim1_scen1_[MW]',
       'DecommisionedCapacity_sim1_scen1_[MW]',
       'ActiveCapacity_sim1_scen2_[MW]',
       'DecommisionedCapacity_sim1_scen2_[MW]'],
      dtype='object')
In [34]:
plt.plot(year['VirginStock_mat1_sim1_scen1_[Tonnes]'])
plt.plot(year['VirginStock_mat1_sim1_scen2_[Tonnes]'])
Out[34]:
[<matplotlib.lines.Line2D at 0x24cc1fa34f0>]
In [35]:
plt.plot(year['ActiveCapacity_sim1_scen2_[MW]'])
Out[35]:
[<matplotlib.lines.Line2D at 0x24cc21de730>]
In [36]:
sim1.plotMetricResults()
[]
In [37]:
#sim1.scenario['scen2'].scenMod_perfectRecycling()